const api = require('../../../utils/api');
const util = require('../../../utils/util'); // 引入util工具类

Page({
  data: {
    news: {
      id: null,
      title: '',
      content: '',
      type: '',
      date: new Date().toISOString().slice(0, 10), // 默认设置为当前日期 YYYY-MM-DD
      coverImageUrl: '',
    },
    isEditMode: false,
  },

  onLoad(options) {
    if (options.id) {
      // 编辑模式
      this.setData({
        'news.id': parseInt(options.id),
        isEditMode: true,
      });
      wx.setNavigationBarTitle({
        title: '编辑新闻'
      });
      this.fetchNewsDetail(options.id);
    } else {
      // 新增模式
      wx.setNavigationBarTitle({
        title: '新增新闻'
      });
    }
  },

  fetchNewsDetail(id) {
    wx.showLoading({
      title: '加载中',
    });
    api.getNewsDetail(id).then(res => {
      wx.hideLoading();
      const newsData = res.data; // 获取原始新闻数据
      // 格式化日期
      if (newsData && newsData.date) {
        newsData.date = util.formatDateToYYYYMMDD(newsData.date);
      }
      this.setData({
        news: newsData
      });
      console.log('编辑新闻详情已设置:', this.data.news);
    }).catch(err => {
      wx.hideLoading();
      console.error('获取新闻详情失败:', err);
      wx.showToast({
        title: '获取新闻详情失败',
        icon: 'none',
        duration: 2000
      });
      setTimeout(() => {
        wx.navigateBack();
      }, 2000);
    });
  },

  bindDateChange(e) {
    this.setData({
      'news.date': e.detail.value
    });
  },

  onInput(e) {
    const { field } = e.currentTarget.dataset;
    this.setData({
      [`news.${field}`]: e.detail.value
    });
  },

  formSubmit(e) {
    const formData = e.detail.value;
    const { title, content, type, date, coverImageUrl } = formData;
    const { isEditMode, news } = this.data;

    if (!title || !content || !type || !date) {
      wx.showToast({
        title: '请填写所有必填字段',
        icon: 'none',
        duration: 2000
      });
      return;
    }

    const newsToSave = {
      id: isEditMode ? news.id : null,
      title,
      content,
      type,
      date, // 日期在后端处理
      coverImageUrl: coverImageUrl || '', // 确保图片URL为空字符串而不是undefined
    };

    wx.showLoading({
      title: isEditMode ? '更新中' : '发布中',
    });

    const promise = isEditMode 
      ? api.updateNews(newsToSave)
      : api.createNews(newsToSave);

    promise.then(res => {
      wx.hideLoading();
      wx.showToast({
        title: isEditMode ? '新闻更新成功' : '新闻发布成功',
        icon: 'success',
        duration: 2000
      });
      setTimeout(() => {
        wx.navigateBack(); // 返回我的新闻页面
      }, 2000);
    }).catch(err => {
      wx.hideLoading();
      console.error(isEditMode ? '更新新闻失败:' : '发布新闻失败:', err);
      wx.showToast({
        title: isEditMode ? '更新新闻失败' : '发布新闻失败',
        icon: 'none',
        duration: 2000
      });
    });
  },

  chooseImage() {
    const self = this;
    wx.chooseMedia({
      count: 1,
      mediaType: ['image'],
      sourceType: ['album', 'camera'],
      success(res) {
        const tempFilePath = res.tempFiles[0].tempFilePath;
        wx.showLoading({
          title: '上传中',
        });
        api.uploadImage(tempFilePath).then(uploadRes => {
          wx.hideLoading();
          self.setData({
            'news.coverImageUrl': uploadRes.url // 更新news对象中的图片URL
          });
          wx.showToast({
            title: '图片上传成功',
            icon: 'success',
            duration: 1500
          });
        }).catch(uploadErr => {
          wx.hideLoading();
          console.error('图片上传失败:', uploadErr);
          wx.showToast({
            title: '图片上传失败',
            icon: 'none',
            duration: 2000
          });
        });
      },
      fail(err) {
        console.error('选择图片失败:', err);
        wx.showToast({
          title: '选择图片失败',
          icon: 'none',
          duration: 2000
        });
      }
    });
  },
}); 